#include "commands.h"

static const COMMAND cmd_list[] = 
{
    { CMD_MODE , cmd_mode },
    { CMD_PASS , cmd_pass },
    { CMD_KILL , cmd_kill },
    { CMD_RUN  , cmd_run },
    { CMD_SHOW , cmd_show },
    { CMD_EXIT , cmd_exit }
};

void
execute_command( char *command )
{     
    int i;
    char *cmd_name, *cmd_param;

    cmd_name = (char *) malloc( strlen( command ) + 1 );
    cmd_param = (char *) malloc( strlen( command ) + 1 );

    // 공백 기준으로 커맨드와 매개변수를 나눔   
    sscanf( command, "%s %s", cmd_name, cmd_param );
 
    for ( i = 0; i < sizeof( cmd_list ) / sizeof( COMMAND ); ++i ) {
     	// 입력받은 명령어와 일치하는 명령어가 있을 경우   
        if( strcmp( cmd_list[i].cmd_name , cmd_name ) == 0 ) {
            // 매개변수가 있는 경우
            if( strlen( cmd_param ) != 0)
                cmd_list[i].cmd_exec( cmd_param );

            cmd_list[i].cmd_exec();
        }
    }
    
}

static void 
cmd_mode( const void *cmd_param )
{
	int run_mode = atoi ( (char *)cmd_param  );

    printf("%d" , run_mode);

	switch(run_mode) {
		case FCFS : break;
		case SJF : break;
		case RR : break;
	}

}

static void 
cmd_pass( const void *cmd_param )
{

}

static void 
cmd_run()
{

}

static void 
cmd_kill( const void *cmd_param ) 
{

}

static void 
cmd_show()
{

}

static void 
cmd_exit() 
{
    exit(1);
}
